# 1
不是讲理论的,就是遇到很多奇怪的问题;
没事做,决定自己仿个个魅族便签玩玩,体验一把开发app的过程;
如何加入标题栏,我还是比较喜欢称之为标题栏,我也没弄明白actionbar 和toolbar改了什么,只提供解决方案;
最初 的时候是这样的,因为toolbar是viewgroup ,也就是说在toolbar中可以直接添加其他控件/view,于是我就加了两个imagebutton;然后我们想啊,click事件怎么写呢?找到button,添加事件,这样做好像和toolbar没有半毛钱关系啊;
记得别忘了把主题修改为noactionbar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/mytoolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/黄色" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" > </android.support.v7.widget.Toolbar>
|
然后google了一圈,发现toolbar 可以在activity 的 onCreate中获取,然后就可以自己动态定义toolbar上的元素了,比如说title什么的;但是奈何我用的Fragment,就又找了一圈:
问题一:解决Fragment中的toolbar问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_list,container,false); Toolbar toolbar = (Toolbar) view.findViewById(R.id.include); AppCompatActivity activity = (AppCompatActivity) getActivity(); activity.setSupportActionBar(toolbar); activity.getSupportActionBar().setTitle("便签"); toolbar.setNavigationIcon(R.drawable.more); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); }
|
问题二:重名问题,其实上面的代码不是困扰,困扰在哪里呢?
1 2
| Toolbar toolbar = (Toolbar) view.findViewById(R.id.include);
|
这个命名实在是,首先我的toolbar本身id叫做toolbar,这个xml叫做toolbar.xml,然后我们将toolbar引入到我们自己的布局时,是这样的:
1 2 3
| <include layout="@layout/toolbar" android:id="@+id/include"/>
|
查了好久,stackoverflow看过,也没懂,后来自己想了想,我们在onCreateView中获取的view肯定是引如toolbar的布局,这样才能找到它啊;于是问题终于终结掉;
问题三:toolbar添加控件后 左侧总有空白
指在xml文件中添加控件
1 2 3 4 5 6 7 8
| <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/base_toolbar" android:layout_width="match_parent" android:layout_height="46dip" android:background="?attr/colorPrimary" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" />
|
# 2
listview:
因为是想尽量模仿,不知道你们注意到listiew中每一项中间是存在间隔的,然后嘞也是弄了好久
1 2 3 4 5 6 7 8 9 10
| <com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/include" android:divider="# F8F8FF" //间隔的颜色 android:background="# F8F8FF" //背景颜色,可以选择和间隔颜色或者与列表项一致,否则你会发现间隔有两种颜色 android:dividerHeight="4dp" //间隔大小 />
|
1 2 3 4 5 6 7 8
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:padding="8dp" android:background="# ffffff" //列表项背景颜色,这样就ok了 >
|
题外话:
1.寻找答案时多动脑子
2.别想着自己配色,太难看;